package junior.回溯法;

public class Combination {
    static int[] stack = new int[1000000];
    static int[] check = new int[1000000];
    static int[] a = {1,4,6};
    static int[] res = new int[1000000];
    static int len;
    static int top = 0;
    static int total = 0;
    static int N = 3;
    public static void main(String[] args) {
        fun1(0);
    }

    /**
     * n=3个元素里面取 n=3 个，进行组合，不允许重复（C（3,3，） = 1 结果只有一个）
     * @param n
     */
    public static void fun1(int n){
        if(n == 3){
            for (int i = 0; i < top; i++) {
                System.out.print(stack[i]+"\t");
            }
            System.out.println();
            total++;
            return;
        }
        for (int i = 1; i <= 3; i++) {  // C (n,r) n个里面取r个元素，进行组合
            if(check[i] == 1){
                continue;
            }
            stack[top++] = i;
            check[i] = 1;  // 已经使用
            fun1(n+1);
            check[i] = 0;  // 未使用（初试值为0）
            top--;
        }
    }

}
